package com.iring.dao.common;

import java.util.List;

import org.springframework.data.jpa.repository.query.Procedure;
import org.springframework.data.repository.CrudRepository;

import com.iring.domain.common.DeviceInfo;


/**
 * 设备信息dao
 *
 * @author wanggan
 */
public interface DeviceDao extends CrudRepository<DeviceInfo, Integer> {
    /**
     * 通过id获取某个设备的详情信息
     * 
     * @param did
     *            设备id
     * @param username
     *            用户名
     * @return    设备信息
     */
    DeviceInfo findByIdAndUsername(Integer did, String username);



    List<DeviceInfo> findByUsernameAndDeviceUsername(String username, String deviceUsername);

    /**
     * 通过mac查询设备信息
     *
     * @param mac
     *            mac地址
     * @return    设备信息
     */
    DeviceInfo findByMac(String mac);

    DeviceInfo findByMacAndUsername(String mac, String username);

    /**
     * 通过vpnip查询设备信息
     *
     * @param vpnip
     *            产生的随机vpnip
     * @return DeviceInfo
     */
    DeviceInfo findDistinctByVpnIp(String vpnip);


    DeviceInfo findDistinctByDeviceDomain(String deviceDomain);

    /**
     * 在devicetrunk 中查询mac和用户名是否存在,如果存在则进行更新,不存在的话则进行创建
     * 保存新的话机和密码
     * 查询是否已经开勇国际话务,如果已开通,则进行更新,如果没有开通,则进行创建开通
     *
     * @param mac
     *            mac地址
     * @param username
     *            username
     * @param newphone
     *            新的话机号码
     * @param newpass
     *            新的话机密码
     * @param sid
     *            开通的服务编号
     * @return 开通结果,如果为0,则操作失败,如果为1,则操作成功
     */
    @Procedure(procedureName = "USP_DEVICE_UPDATE_PROC")
    Integer updateDeviceInfo(String mac, String username, String newphone, String newpass,
                             Integer sid);

}
